
import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.util.Vector;

public class ClinicaDAO extends Base{
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public ClinicaDAO(){
        
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Métodos">
    /*
   * Método que monta a query para cadastro de clinicas
   */
    public boolean cadastrarClinica(Clinica clinica) {
        conectarBanco();
        String sql;
        
        sql = "INSERT INTO tb_clinica (nome,razao_social,cnpj,email,telefone,celular,endereco,numero,"
                + "apto,uf,cidade,bairro) values('"+clinica.getNome()+"','"+clinica.getRazaoSocial()+"','"+clinica.getCnpj()+"','"+clinica.getEmail()+"','"+clinica.getTelefone()+"','"+clinica.getCelular()+"',"
                + "'"+clinica.getEndereco()+"','"+clinica.getNumero()+"','"+clinica.getApto()+"','"+clinica.getUf()+"','"+clinica.getCidade()+"','"+clinica.getBairro()+"')";
        
        return cadastrar(sql);
    }
    /*
     * Método que monta a query para cada tipo de pesquisa
     * de clinica.    
     */
    public Vector<Clinica> buscarClinica(String filtrar_por,String pesquisar){
        //Vector<Clinica> vector = new Vector<Clinica>();
        try {
            Vector<Clinica> list = new Vector<Clinica>();
            conectarBanco();
            String sql;
            if(filtrar_por.equals("Código")){
                sql = "SELECT * FROM tb_clinica WHERE id_clinica = '"+pesquisar+"';";
            }
            else if(filtrar_por.equals("Nome")){
                sql = "SELECT * FROM tb_clinica WHERE nome LIKE '%"+pesquisar+"%';";
            }
            else if(filtrar_por.equals("CNPJ")){
                sql = "SELECT * FROM tb_clinica WHERE cnpj LIKE '%"+pesquisar+"%';";
            }
            else{
                sql = "SELECT * FROM tb_clinica order by id_clinica;";
            }
        
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);

            if (rs != null) {
                while (rs.next()) {
                    Clinica clinica = new Clinica();
                    clinica.setID(rs.getInt("id_clinica"));
                    clinica.setNome(rs.getString("nome"));
                    clinica.setRazaoSocial(rs.getString("razao_social"));
                    clinica.setCnpj(rs.getString("cnpj"));
                    clinica.setEmail(rs.getString("email"));
                    clinica.setTelefone(rs.getString("telefone"));
                    clinica.setCelular(rs.getString("celular"));
                    clinica.setEndereco(rs.getString("endereco"));
                    clinica.setNumero(rs.getString("numero"));
                    clinica.setApto(rs.getString("apto"));
                    clinica.setUf(rs.getString("uf"));
                    clinica.setCidade(rs.getString("cidade"));
                    clinica.setBairro(rs.getString("bairro"));

                    list.add(clinica);
                }
                return list;
            }
        }catch (Exception e) {
            System.out.println(e);
        }
        return null;
    } 
    /*
    * Método que monta a query e chama o buscarProximoID na classe Base.
    * e retorna pra classe ClinicaController o id ja incrementado, ClinicaController
    * só retorna para o frm_clinicas.
    */
    public int buscar_ProximoID(String id_tabela){
        conectarBanco();
        String sql;
        sql = "SELECT MAX("+id_tabela+") FROM tb_clinica;";
        return buscarProximoID(sql,"id_clinica");
    }
    /*
     * Método para busca o id da linha passada por parametro.
     */
    public int buscarID_Tabela(int linha){
        conectarBanco();
        String id = String.valueOf(frm_clinicas.jt_clinicas.getValueAt(linha, 0));
        return Integer.parseInt(id);
    }
    /*
     * Método que recebe o objeto clinica e monta a query para 
     * alteração dos campos.
     */
    public boolean alterarClinica(Clinica clinica){
        conectarBanco();
        
            String sql;
            sql = "UPDATE tb_clinica SET nome = '"+clinica.getNome()+"',razao_social='"+clinica.getRazaoSocial()+"',"+"cnpj='"+clinica.getCnpj()+"', email='"+clinica.getEmail()+"', telefone='"+clinica.getTelefone()+"', celular='"+clinica.getCelular()+"',"
                        + "endereco='"+clinica.getEndereco()+"',numero='"+clinica.getNumero()+"',apto='"+clinica.getApto()+"',uf='"+clinica.getUf()+"',cidade='"+clinica.getCidade()+"',bairro='"+clinica.getBairro()+"'WHERE id_clinica = "+clinica.getID()+";";
                
            return alterar(sql);
    }
    /*
     * Método que monta query para editar clinicas.
     */
    public Vector<Clinica> editarClinica(Clinica clinica){
        Vector<Clinica> vector = new Vector<Clinica>();
        Vector<Clinica> list = new Vector<Clinica>();
        String sql;
        try{
            conectarBanco();
            sql = "SELECT * FROM tb_clinica WHERE id_clinica = "+clinica.getID()+";";
    //        vector = buscarClinicas(sql);
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);

            if (rs != null) {
                while (rs.next()) {
                    
                    clinica.setID(rs.getInt("id_clinica"));
                    clinica.setNome(rs.getString("nome"));
                    clinica.setRazaoSocial(rs.getString("razao_social"));
                    clinica.setCnpj(rs.getString("cnpj"));
                    clinica.setEmail(rs.getString("email"));
                    clinica.setTelefone(rs.getString("telefone"));
                    clinica.setCelular(rs.getString("celular"));
                    clinica.setEndereco(rs.getString("endereco"));
                    clinica.setNumero(rs.getString("numero"));
                    clinica.setApto(rs.getString("apto"));
                    clinica.setUf(rs.getString("uf"));
                    clinica.setCidade(rs.getString("cidade"));
                    clinica.setBairro(rs.getString("bairro"));

                    list.add(clinica);
                }
                return list;
            }
        }catch (Exception e) {
            System.out.println(e);
        }
        return null;
        
    }
    
    /*
     * Método que monta a query para listar clinicas em um combobox.
     */
    public void listarClinicasCombo(){
        conectarBanco();
        try {
            String sql;
            sql = "SELECT nome FROM tb_clinica;";
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()) {
                frm_dentistas.cb_clinica.addItem(rs.getString("nome"));
            }
        } catch (Exception e) {
        }
    }
    
    //</editor-fold>
}
